home *** CD-ROM | disk | FTP | other *** search
/ The X-Philes (2nd Revision) / The X-Philes Number 1 (1995).iso / xphiles / hp48_1 / bessel_j < prev    next >
Internet Message Format  |  1995-03-31  |  26KB

  1. From comp.sys.handhelds Fri May 24 22:39:50 1991
  2. Path: seq!ecsgate!mcnc!gatech!udel!wuarchive!sdd.hp.com!spool.mu.edu!cs.umn.edu!msi.umn.edu!noc.MR.NET!gacvx2.gac.edu!hhdist
  3. From: NU123952@VM1.NoDak.EDU (Mark A. Ordal)
  4. Newsgroups: comp.sys.handhelds
  5. Subject: Bessel J,Y,I,& K documentation
  6. Message-ID: <8461880F400025CD@gacvx2.gac.edu>
  7. Date: 16 May 91 02:27:05 GMT
  8. Organization: North Dakota Higher Education Computer Network
  9. Lines: 683
  10. Return-path: <NU123952@VM1.NoDak.EDU>
  11. To: handhelds@gac.edu
  12.  
  13. Here's the commented listing for things like the size and checksum of
  14. each program (as well as the entire directory), references for the
  15. various algorithms, etc.
  16.  
  17. By the way, you Bessel fans on the HP BBS should be aware that my MAIL
  18. program "can't get there from here".  That's why I haven't replied
  19. directly to you.
  20.  
  21.                Dr. Mark A. Ordal
  22.                Physics Department
  23.                North Dakota State University
  24.                Fargo, ND 58105
  25.                NU123952@NDSUVM1
  26.  
  27. %%HP: T(3)A(D)F(.);
  28. DIR
  29. @ ----------------------------------------------------------------------
  30. @
  31. @                J (x), Y (x), I (x), and K (x)
  32. @                 n      n      n          n
  33. @
  34. @ ----------------------------------------------------------------------
  35. @  Integer order Bessel Functions of the first and second kinds and
  36. @  integer order Modified Bessel Functions of the first and second kinds
  37. @  for non-negative integer order and non-negative real argument.
  38. @ ----------------------------------------------------------------------
  39. @ HP48 programs by Dr. Mark A. Ordal, North Dakota State University,
  40. @ Physics Department, Fargo, ND, 58105
  41. @ NU123952@NDSUVM1
  42. @ revision of April 25, 1991
  43. @ ----------------------------------------------------------------------
  44. @ This is the ASCII listing (translate 3 mode) of a directory that
  45. @ contains the following:
  46. @
  47. @    Programs:
  48. @        Jnx, NRJN, ASJ1, and ASJ0      (Bessel: first kind)
  49. @        Ynx, NRYN, ASY1, and ASY0      (Bessel: second kind)
  50. @        Inx, NRIN, ASI1, and ASI0      (Modified Bessel: first kind)
  51. @        Knx, NRKN, ASK1, and ASK0      (Modified Bessel: second kind)
  52. @
  53. @    Subroutines: JYIK, JY1, and JY0
  54. @
  55. @ NOTE: These programs do not prevent you from entering an invalid order
  56. @       or argument.
  57. @
  58. @ When named BESSINT, running the Bytes command on the name of this
  59. @ directory returns:  Checksum  #18596 and 4558 bytes.
  60. @ ----------------------------------------------------------------------
  61. @ Changes from previous version:
  62. @   1) Programs ASJ0, ASJ1, ASY0, and ASY1 preserve the state of system
  63. @      flags (e.g., the DEG or RAD modes).
  64. @
  65. @   2) Subroutine JYIK was made 4.5 bytes smaller by using a START-NEXT
  66. @      LOOP instead of a FOR-NEXT loop.
  67. @ ----------------------------------------------------------------------
  68. Jnx
  69. @ ----------------------------------------------------------------------
  70. @ Bessel Functions of the FIRST kind and integer order
  71. @
  72. @ To use:
  73. @ Level 2 of stack: order (a nonnegative integer)
  74. @ Level 1 of stack: argument (any nonnegative real number)
  75. @
  76. @ When named Jnx, the BYTES command returns #51151 and 123.5 bytes
  77. @ ----------------------------------------------------------------------
  78.   Jnx
  79.     \<< \-> n x
  80.       \<<
  81.         CASE n 0
  82. SAME
  83.           THEN x
  84. ASJ0
  85.           END n 1
  86. SAME
  87.           THEN x
  88. ASJ1
  89.           END n x
  90. NRJN
  91.         END
  92.       \>>
  93.     \>>
  94.   Ynx
  95. @ ----------------------------------------------------------------------
  96. @ Bessel Functions of the SECOND kind and integer order
  97. @
  98. @ To use:
  99. @ Level 2 of stack: order (a nonnegative integer)
  100. @ Level 1 of stack: argument (any positive real number)
  101. @
  102. @ Remember that Yn(x) is infinite for x=0
  103. @
  104. @ When named Ynx, the BYTES command returns #18975 and 123.5 bytes
  105. @ ----------------------------------------------------------------------
  106.     \<< \-> n x
  107.       \<<
  108.         CASE n 0
  109. SAME
  110.           THEN x
  111. ASY0
  112.           END n 1
  113. SAME
  114.           THEN x
  115. ASY1
  116.           END n x
  117. NRYN
  118.         END
  119.       \>>
  120.     \>>
  121.   Inx
  122. @ ----------------------------------------------------------------------
  123. @ Modified Bessel Functions of the FIRST kind and integer order
  124. @
  125. @ To use:
  126. @ Level 2 of stack: order (a nonnegative integer)
  127. @ Level 1 of stack: argument (any nonnegative real number)
  128. @
  129. @ When named Inx, the BYTES command returns #30214d and 123.5 bytes
  130. @ ----------------------------------------------------------------------
  131.     \<< \-> n x
  132.       \<<
  133.         CASE n 0
  134. SAME
  135.           THEN x
  136. ASI0
  137.           END n 1
  138. SAME
  139.           THEN x
  140. ASI1
  141.           END n x
  142. NRIN
  143.         END
  144.       \>>
  145.     \>>
  146.   Knx
  147. @ ----------------------------------------------------------------------
  148. @ Modifed Bessel Functions of the SECOND kind and integer order
  149. @
  150. @ To use:
  151. @ Level 2 of stack: order (a nonnegative integer)
  152. @ Level 1 of stack: argument (any positive real number)
  153. @
  154. @ Remember that Kn(x) is infinite for x=0
  155. @
  156. @ When named Knx, the BYTES command returns #20615d and 123.5 bytes
  157. @ ----------------------------------------------------------------------
  158.     \<< \-> n x
  159.       \<<
  160.         CASE n 0
  161. SAME
  162.           THEN x
  163. ASK0
  164.           END n 1
  165. SAME
  166.           THEN x
  167. ASK1
  168.           END n x
  169. NRKN
  170.         END
  171.       \>>
  172.     \>>
  173.   NRJN
  174. @ ----------------------------------------------------------------------
  175. @ Bessel Functions of the FIRST kind and integer order n > 1
  176. @ calculated using the RPL equivalent of the "Numerical Recipes"
  177. @ program BESSJ.  Needs the equivalent of the "Numerical Recipes"
  178. @ programs BESSJ0 and BESSJ1.  In this case, programs ASJ0 and ASJ1
  179. @ are used instead -- based on Abramowitz and Stegun Eqs 9.4.1 and
  180. @ 9.4.3 for order zero and Eqs 9.4.4 and 9.4.6 for order one.
  181. @
  182. @ The programs ASJ0 and ASJ1 based on the Abramowitz and Stegun
  183. @ equations are shorter and faster than RPL equivalents of BESSJ0
  184. @ and BESSJ1.)
  185. @
  186. @ To use:
  187. @ Level 2 of stack: order (a positive integer > 1)
  188. @ Level 1 of stack: argument (any nonnegative real number)
  189. @
  190. @ The "Numerical Recipes" program variables TOX, SUM, BIGNO, BIGNI,
  191. @ and BESSJ have been replaced by t, s, u, d, and sj, respectively.
  192. @ Variable IACC has been replaced by its value of 40.
  193. @
  194. @ When named NRJN, the BYTES command returns #18067d and 657 bytes
  195. @
  196. @ To adapt for use on the HP28S, replace the commands 'm' DECR with
  197. @ the equivalent sequence m 1 - 'm' STO m
  198. @ ----------------------------------------------------------------------
  199.     \<< 10000000000
  200. .0000000001 0 0 0 0
  201. \-> n x u d t m s sj
  202.       \<< 2 x / 't'
  203. STO
  204.         IF x n >
  205.         THEN x ASJ0
  206. x ASJ1 1 n 1 -
  207.           FOR j j t
  208. * OVER * 3 PICK -
  209. ROT DROP
  210.           NEXT SWAP
  211. DROP
  212.         ELSE 40 n *
  213. \v/ IP n + 2 / IP 2 *
  214. 'm' STO 0 1 m
  215.           DO t *
  216. OVER * 3 PICK - ROT
  217. DROP
  218.             IF DUP
  219. ABS u >
  220.             THEN d
  221. * SWAP d * SWAP d
  222. DUP 'sj' STO* 's'
  223. STO*
  224.             END
  225.             IF m n
  226. SAME
  227.             THEN
  228. OVER 'sj' STO
  229.             END 'm'
  230. DECR t * OVER * 3
  231. PICK - ROT DROP
  232.             IF DUP
  233. ABS u >
  234.             THEN d
  235. * SWAP d * SWAP d
  236. DUP 'sj' STO* 's'
  237. STO*
  238.             END
  239.             IF m n
  240. SAME
  241.             THEN
  242. OVER 'sj' STO
  243.             END DUP
  244. 's' STO+ 'm' DECR
  245.           UNTIL m 1
  246. <
  247.           END DROP
  248. SWAP DROP NEG s 2 *
  249. + sj SWAP /
  250.         END
  251.       \>>
  252.     \>>
  253.   NRYN
  254. @ ----------------------------------------------------------------------
  255. @ Bessel Functions of the SECOND kind and integer order n > 1
  256. @ calculated using the RPL equivalent of the "Numerical Recipes"
  257. @ program BESSY.  Needs the equivalent of the "Numerical Recipes"
  258. @ programs BESSY0 and BESSY1.  In this case, programs ASY0 and ASY1
  259. @ are used instead -- based on Abramowitz and Stegun Eqs 9.4.1 and
  260. @ 9.4.3 for order zero and Eqs 9.4.4 and 9.4.6 for order one.
  261. @
  262. @ The programs ASY0 and ASY1 based on the Abramowitz and Stegun
  263. @ equations are shorter and faster than RPL equivalents of BESSY0
  264. @ and BESSY1.)
  265. @
  266. @ To use:
  267. @ Level 2 of stack: order (a positive integer > 1)
  268. @ Level 1 of stack: argument (any positive real number)
  269. @
  270. @ The "Numerical Recipes" program variable TOX has been replaced by t.
  271. @ Variable IACC has been replaced by its value of 40.
  272. @
  273. @ When named NRYN, the BYTES command returns #16760 and 143 bytes
  274. @ ----------------------------------------------------------------------
  275.     \<< 0 \-> n x t
  276.       \<< 2 x / 't'
  277. STO x ASY0 x ASY1 1
  278. n 1 -
  279.         FOR j j t *
  280. OVER * 3 PICK - ROT
  281. DROP
  282.         NEXT SWAP
  283. DROP
  284.       \>>
  285.     \>>
  286.   NRIN
  287. @ ----------------------------------------------------------------------
  288. @ Modified Bessel Functions of the FIRST kind and integer order n > 1
  289. @ calculated using the RPL equivalent of the "Numerical Recipes"
  290. @ program BESSI.  Needs the equivalent of the "Numerical Recipes"
  291. @ programs BESSI0 and BESSI1.  These programs (renamed ASJ0 and ASJ1)
  292. @ are based on Abramowitz and Stegun Eqs 9.8.1 and 9.8.2 for order zero
  293. @ and Eqs 9.8.3 and 9.8.4 for order one.
  294. @
  295. @ To use:
  296. @ Level 2 of stack: order (a positive integer > 1)
  297. @ Level 1 of stack: argument (any nonnegative real number)
  298. @
  299. @ The "Numerical Recipes" program variables TOX, BIGNO, BIGNI,
  300. @ and BESSI have been replaced by t, u, d, and si, respectively.
  301. @ Variable IACC has been replaced by its value of 40.
  302. @
  303. @ When named NRIN, the BYTES command returns #9623d and 315 bytes
  304. @ ----------------------------------------------------------------------
  305.     \<< 10000000000
  306. .0000000001 0 0 \-> n
  307. x u d t si
  308.       \<< 2 x / 't'
  309. STO 0 1 40 n * \v/ IP
  310. n + 2 * 1
  311.         FOR j j t *
  312. OVER * 3 PICK + ROT
  313. DROP
  314.           IF DUP
  315. ABS u >
  316.           THEN d *
  317. SWAP d * SWAP d
  318. 'si' STO*
  319.           END
  320.           IF j n
  321. SAME
  322.           THEN OVER
  323. 'si' STO
  324.           END -1
  325.         STEP SWAP
  326. DROP si SWAP / x
  327. ASI0 *
  328.       \>>
  329.     \>>
  330.   NRKN
  331. @ ----------------------------------------------------------------------
  332. @ Modifed Bessel Functions of the SECOND kind and integer order n > 1
  333. @ calculated using the RPL equivalent of the "Numerical Recipes"
  334. @ program BESSK.  Needs the equivalent of the "Numerical Recipes"
  335. @ programs BESSK0 and BESSK1.  These programs (renamed ASK0 and ASK1)
  336. @ are based on Abramowitz and Stegun Eqs 9.8.5 and 9.8.6 for order zero
  337. @ and Eqs 9.8.7 and 9.8.8 for order one.
  338. @
  339. @ To use:
  340. @ Level 2 of stack: order (a positive integer > 1)
  341. @ Level 1 of stack: argument (any positive real number)
  342. @
  343. @ The "Numerical Recipes" program variables TOX, BIGNO, BIGNI,
  344. @ and BESSK have been replaced by t, u, d, and sk, respectively.
  345. @
  346. @ When named NRKN, the BYTES command returns #20286d and 181 bytes
  347. @ ----------------------------------------------------------------------
  348.     \<< 10000000000
  349. .0000000001 0 0 \-> n
  350. x u d t sk
  351.       \<< 2 x / 't'
  352. STO x ASK0 x ASK1 1
  353. n 1 -
  354.         FOR j j t *
  355. OVER * 3 PICK + ROT
  356. DROP
  357.         NEXT SWAP
  358. DROP
  359.       \>>
  360.     \>>
  361.   ASJ1
  362. @ ----------------------------------------------------------------------
  363. @ Bessel Functions of the FIRST kind and order one calculated
  364. @ using Abramowitz and Stegun Eqs 9.4.4 and 9.4.6
  365. @
  366. @ This program is slightly shorter and faster than the RPL equivalent
  367. @ of the "Numerical Recipes" program BESSJ1.
  368. @
  369. @ This program program calls programs JYIK and JY1.
  370. @
  371. @ To use:
  372. @ Level 1 of stack: argument (any nonnegative real number)
  373. @
  374. @ When named ASJ1, the BYTES command returns #49835d and 213.5 bytes
  375. @ ----------------------------------------------------------------------
  376.     \<< 0 RCLF \-> x a
  377. ff
  378.       \<<
  379.         IF x 3 <
  380.         THEN .5
  381. -.56249985
  382. .21093573
  383. -.03954289
  384. .00443319
  385. -.00031761
  386. .00001109 x 3 / SQ
  387. 6 JYIK x *
  388.         ELSE x JY1
  389. RAD COS * x \v/ /
  390.         END ff STOF
  391.       \>>
  392.     \>>
  393.   ASY1
  394. @ ----------------------------------------------------------------------
  395. @ Bessel Functions of the SECOND kind and order one calculated
  396. @ using Abramowitz and Stegun Eqs 9.4.4 and 9.4.6
  397. @
  398. @ This program is slightly shorter and faster than the RPL equivalent
  399. @ of the "Numerical Recipes" program BESSY1.
  400. @
  401. @ This program program calls programs JYIK, JY1, and ASJ1.
  402. @
  403. @ To use:
  404. @ Level 1 of stack: argument (any positive real number)
  405. @
  406. @ When named ASY1, the BYTES command returns #1027d and 270 bytes
  407. @ ----------------------------------------------------------------------
  408.     \<< 0 RCLF \-> x a
  409. ff
  410.       \<<
  411.         IF x 3 <
  412.         THEN
  413. -.6366198 .2212091
  414. 2.1682709
  415. -1.3164827 .3123951
  416. -.0400976 .0027873
  417. x 3 / SQ 6 JYIK x
  418. ASJ1 x .5 * LN * x
  419. * 2 * \pi \->NUM / + x
  420. /
  421.         ELSE x JY1
  422. RAD SIN * x \v/ /
  423.         END ff STOF
  424.       \>>
  425.     \>>
  426.   ASI1
  427. @ ----------------------------------------------------------------------
  428. @ Modifed Bessel Functions of the FIRST kind and order one calculated
  429. @ using Abramowitz and Stegun Eqs 9.8.3 and 9.8.4
  430. @
  431. @ To use:
  432. @ Level 1 of stack: argument (any nonnegative real number)
  433. @
  434. @ This program program calls program JYIK
  435. @
  436. @ When named ASI1, the BYTES command returns #12477d and 334.5 bytes
  437. @ ----------------------------------------------------------------------
  438.     \<< 0 \-> x a
  439.       \<<
  440.         IF x ABS
  441. 3.75 <
  442.         THEN .5
  443. .87890594 .51498869
  444. .15084934 .02658733
  445. .00301532 .00032411
  446. x 3.75 / SQ 6 JYIK
  447. x *
  448.         ELSE
  449. .39894228
  450. -.03988024
  451. -.00362018
  452. .00163801
  453. -.01031555
  454. .02282967
  455. -.02895312
  456. .01787654
  457. -.00420059 3.75 x
  458. ABS / 8 JYIK x ABS
  459. DUP EXP SWAP \v/ / *
  460.         END
  461.       \>>
  462.     \>>
  463.   ASK1
  464. @ ----------------------------------------------------------------------
  465. @ Modifed Bessel Functions of the SECOND kind and order one calculated
  466. @ using Abramowitz and Stegun Eqs 9.8.7 and 9.8.8
  467. @
  468. @ This program program calls programs JYIK and ASI1.
  469. @
  470. @ To use:
  471. @ Level 1 of stack: argument (any positive real number)
  472. @
  473. @ When named ASK1, the BYTES command returns #54561d and 308 bytes
  474. @ ----------------------------------------------------------------------
  475.     \<< 0 \-> x a
  476.       \<<
  477.         IF x ABS 2
  478. <
  479.         THEN 1
  480. .15443144
  481. -.67278579
  482. -.18156897
  483. -.01919402
  484. -.00110404
  485. -.00004686 x 2 / SQ
  486. 6 JYIK x / x ASI1 x
  487. 2 / LN * +
  488.         ELSE
  489. 1.25331414
  490. .23498619 -.0365562
  491. .01504268
  492. -.00780353
  493. .00325614
  494. -.00068245 2 x / 6
  495. JYIK x DUP NEG EXP
  496. SWAP \v/ / *
  497.         END
  498.       \>>
  499.     \>>
  500.   ASJ0
  501. @ ----------------------------------------------------------------------
  502. @ Bessel Functions of the FIRST kind and order zero calculated
  503. @ using Abramowitz and Stegun Eqs 9.4.1 and 9.4.3
  504. @
  505. @ This program is slightly shorter and faster than the RPL equivalent
  506. @ of the "Numerical Recipes" program BESSJ0.
  507. @ This program program calls programs JYIK and JY0.
  508. @
  509. @ To use:
  510. @ Level 1 of stack: argument (any nonnegative real number)
  511. @
  512. @ When named ASJ0, the BYTES command returns #1504d and 198.5 bytes
  513. @ ----------------------------------------------------------------------
  514.     \<< 0 RCLF \-> x a
  515. ff
  516.       \<<
  517.         IF x 3 <
  518.         THEN 1
  519. -2.2499997
  520. 1.2656208 -.3163866
  521. .0444479 -.0039444
  522. .00021 x 3 / SQ 6
  523. JYIK
  524.         ELSE x JY0
  525. RAD COS * x \v/ /
  526.         END ff STOF
  527.       \>>
  528.     \>>
  529.   ASY0
  530. @ ----------------------------------------------------------------------
  531. @ Bessel Functions of the SECOND kind and order zero calculated
  532. @ using Abramowitz and Stegun Eqs 9.4.1 and 9.4.3
  533. @
  534. @ This program is slightly shorter and faster than the RPL equivalent
  535. @ of the "Numerical Recipes" program BESSY0.
  536. @ This program program calls programs JYIK, JY0, and ASJ0.
  537. @
  538. @ To use:
  539. @ Level 1 of stack: argument (any nonnegative real number)
  540. @
  541. @ When named ASY0, the BYTES command returns #37606d and 256 bytes
  542. @ ----------------------------------------------------------------------
  543.     \<< 0 RCLF \-> x a
  544. ff
  545.       \<<
  546.         IF x 3 <
  547.         THEN
  548. .36746691 .60559366
  549. -.74350384
  550. .25300117
  551. -.04261214
  552. .00427916
  553. -.00024846 x 3 / SQ
  554. 6 JYIK x ASJ0 x .5
  555. * LN * 2 * \pi \->NUM /
  556. +
  557.         ELSE x JY0
  558. RAD SIN * x \v/ /
  559.         END ff STOF
  560.       \>>
  561.     \>>
  562.   ASI0
  563. @ ----------------------------------------------------------------------
  564. @ Modifed Bessel Functions of the FIRST kind and order zero calculated
  565. @ using Abramowitz and Stegun Eqs 9.8.1 and 9.8.2
  566. @
  567. @ To use:
  568. @ Level 1 of stack: argument (any nonnegative real number)
  569. @
  570. @ This program program calls program JYIK
  571. @
  572. @ When named ASI0, the BYTES command returns #63274 and 319.5 bytes
  573. @ ----------------------------------------------------------------------
  574.     \<< 0 \-> x a
  575.       \<<
  576.         IF x ABS
  577. 3.75 <
  578.         THEN 1
  579. 3.5156229 3.0899424
  580. 1.2067492 .2659732
  581. .0360768 .0045813 x
  582. 3.75 / SQ 6 JYIK
  583.         ELSE
  584. .39894228 .01328592
  585. .00225319
  586. -.00157565
  587. .00916281
  588. -.02057706
  589. .02635537
  590. -.01647633
  591. .00392377 3.75 x
  592. ABS / 8 JYIK x ABS
  593. DUP EXP SWAP \v/ / *
  594.         END
  595.       \>>
  596.     \>>
  597.   ASK0
  598. @ ----------------------------------------------------------------------
  599. @ Modifed Bessel Functions of the SECOND kind and order zero calculated
  600. @ using Abramowitz and Stegun Eqs 9.8.5 and 9.8.6
  601. @
  602. @ This program program calls programs JYIK and ASI0.
  603. @
  604. @ To use:
  605. @ Level 1 of stack: argument (any positive real number)
  606. @
  607. @ When named ASK0, the BYTES command returns #64307 and 311.5 bytes
  608. @ ----------------------------------------------------------------------
  609.     \<< 0 \-> x a
  610.       \<<
  611.         IF x ABS 2
  612. <
  613.         THEN
  614. -.57721566 .4227842
  615. .23069756 .0348859
  616. .00262698 .0001075
  617. .0000074 x 2 / SQ 6
  618. JYIK x ASI0 x 2 /
  619. LN NEG * +
  620.         ELSE
  621. 1.25331414
  622. -.07832358
  623. .02189568
  624. -.01062446
  625. .00587872 -.0025154
  626. .00053208 2 x / 6
  627. JYIK x DUP NEG EXP
  628. SWAP \v/ / *
  629.         END
  630.       \>>
  631.     \>>
  632.   JYIK
  633. @ ----------------------------------------------------------------------
  634. @ Subprogram for use by ASJ0, ASJ1, ASY0, ASY1, ASI0, ASI1, ASK0, and
  635. @ ASK1
  636. @
  637. @ When named JYIK, the BYTES command returns #32125d and 56.5 bytes
  638. @ ----------------------------------------------------------------------
  639.     \<< \-> t j
  640.       \<< 1 j
  641.         START t * +
  642.         NEXT
  643.       \>>
  644.     \>>
  645.   JY1
  646. @ ----------------------------------------------------------------------
  647. @ Subprogram for use by ASJ1 and ASY1
  648. @
  649. @ This program program calls program JYIK
  650. @
  651. @ When named JY1, the BYTES command returns #54172d and 241 bytes
  652. @ ----------------------------------------------------------------------
  653.     \<< 0 \-> x a
  654.       \<< 3 x / 'a'
  655. STO .79788456
  656. .00000156 .01659667
  657. .00017105
  658. -.00249511
  659. .00113653
  660. -.00020033 a 6 JYIK
  661. -2.35619449
  662. .12499612 .0000565
  663. -.00637879
  664. .00074348 .00079824
  665. -.00029166 a 6 JYIK
  666. x +
  667.       \>>
  668.     \>>
  669.   JY0
  670. @ ----------------------------------------------------------------------
  671. @ Subprogram for use by ASJ0 and ASY0
  672. @
  673. @ This program program calls program JYIK
  674. @
  675. @ When named JY0.SUB, the BYTES command returns #15249d and 241 bytes
  676. @ ----------------------------------------------------------------------
  677.     \<< 0 \-> x a
  678.       \<< 3 x / 'a'
  679. STO .79788456
  680. -.00000077
  681. -.0055274
  682. -.00009512
  683. .00137237
  684. -.00072805
  685. .00014476 a 6 JYIK
  686. -.78539816
  687. -.04166397
  688. -.00003954
  689. .00262573
  690. -.00054125
  691. -.00029333
  692. .00013558 a 6 JYIK
  693. x +
  694.       \>>
  695.     \>>
  696. END
  697.  
  698. From comp.sys.handhelds Fri May 24 22:40:40 1991
  699. Path: seq!ecsgate!mcnc!gatech!udel!wuarchive!sdd.hp.com!spool.mu.edu!cs.umn.edu!msi.umn.edu!noc.MR.NET!gacvx2.gac.edu!hhdist
  700. From: NU123952@VM1.NoDak.EDU (Mark A. Ordal)
  701. Newsgroups: comp.sys.handhelds
  702. Subject: Bessel J, Y, I, and K for 48SX
  703. Message-ID: <83CB556FE00028C7@gacvx2.gac.edu>
  704. Date: 16 May 91 02:21:34 GMT
  705. Organization: North Dakota Higher Education Computer Network
  706. Lines: 410
  707. Return-path: <NU123952@VM1.NoDak.EDU>
  708. To: handhelds@gac.edu
  709.  
  710. There's been some interest in Bessel Functions I (x) and K (x) so I've
  711.                                                 n         n
  712.  
  713. tacked them onto my earlier routines for J (x) and Y (x).
  714.                                           n         n
  715.  
  716.  
  717. The listing of the directory is given below.  In a separate posting
  718. I'm providing a commented listing.  Note that the commented listing
  719. WILL NOT DOWNLOAD to a 32k 48SX.  (Maybe not at all as far as that
  720. goes.)  There seems to be some upper limit to how many comments are
  721. allowed in a single 48SX download.
  722.  
  723.                Dr. Mark A. Ordal
  724.                Physics Department
  725.                North Dakota State University
  726.                Fargo, ND 58105
  727.                NU123952@NDSUVM1
  728.  
  729.  
  730. %%HP: T(3)A(D)F(.);
  731. DIR
  732.   Jnx
  733.     \<< \-> n x
  734.       \<<
  735.         CASE n 0
  736. SAME
  737.           THEN x
  738. ASJ0
  739.           END n 1
  740. SAME
  741.           THEN x
  742. ASJ1
  743.           END n x
  744. NRJN
  745.         END
  746.       \>>
  747.     \>>
  748.   Ynx
  749.     \<< \-> n x
  750.       \<<
  751.         CASE n 0
  752. SAME
  753.           THEN x
  754. ASY0
  755.           END n 1
  756. SAME
  757.           THEN x
  758. ASY1
  759.           END n x
  760. NRYN
  761.         END
  762.       \>>
  763.     \>>
  764.   Inx
  765.     \<< \-> n x
  766.       \<<
  767.         CASE n 0
  768. SAME
  769.           THEN x
  770. ASI0
  771.           END n 1
  772. SAME
  773.           THEN x
  774. ASI1
  775.           END n x
  776. NRIN
  777.         END
  778.       \>>
  779.     \>>
  780.   Knx
  781.     \<< \-> n x
  782.       \<<
  783.         CASE n 0
  784. SAME
  785.           THEN x
  786. ASK0
  787.           END n 1
  788. SAME
  789.           THEN x
  790. ASK1
  791.           END n x
  792. NRKN
  793.         END
  794.       \>>
  795.     \>>
  796.   NRJN
  797.     \<< 10000000000
  798. .0000000001 0 0 0 0
  799. \-> n x u d t m s sj
  800.       \<< 2 x / 't'
  801. STO
  802.         IF x n >
  803.         THEN x ASJ0
  804. x ASJ1 1 n 1 -
  805.           FOR j j t
  806. * OVER * 3 PICK -
  807. ROT DROP
  808.           NEXT SWAP
  809. DROP
  810.         ELSE 40 n *
  811. \v/ IP n + 2 / IP 2 *
  812. 'm' STO 0 1 m
  813.           DO t *
  814. OVER * 3 PICK - ROT
  815. DROP
  816.             IF DUP
  817. ABS u >
  818.             THEN d
  819. * SWAP d * SWAP d
  820. DUP 'sj' STO* 's'
  821. STO*
  822.             END
  823.             IF m n
  824. SAME
  825.             THEN
  826. OVER 'sj' STO
  827.             END 'm'
  828. DECR t * OVER * 3
  829. PICK - ROT DROP
  830.             IF DUP
  831. ABS u >
  832.             THEN d
  833. * SWAP d * SWAP d
  834. DUP 'sj' STO* 's'
  835. STO*
  836.             END
  837.             IF m n
  838. SAME
  839.             THEN
  840. OVER 'sj' STO
  841.             END DUP
  842. 's' STO+ 'm' DECR
  843.           UNTIL m 1
  844. <
  845.           END DROP
  846. SWAP DROP NEG s 2 *
  847. + sj SWAP /
  848.         END
  849.       \>>
  850.     \>>
  851.   NRYN
  852.     \<< 0 \-> n x t
  853.       \<< 2 x / 't'
  854. STO x ASY0 x ASY1 1
  855. n 1 -
  856.         FOR j j t *
  857. OVER * 3 PICK - ROT
  858. DROP
  859.         NEXT SWAP
  860. DROP
  861.       \>>
  862.     \>>
  863.   NRIN
  864.     \<< 10000000000
  865. .0000000001 0 0 \-> n
  866. x u d t si
  867.       \<< 2 x / 't'
  868. STO 0 1 40 n * \v/ IP
  869. n + 2 * 1
  870.         FOR j j t *
  871. OVER * 3 PICK + ROT
  872. DROP
  873.           IF DUP
  874. ABS u >
  875.           THEN d *
  876. SWAP d * SWAP d
  877. 'si' STO*
  878.           END
  879.           IF j n
  880. SAME
  881.           THEN OVER
  882. 'si' STO
  883.           END -1
  884.         STEP SWAP
  885. DROP si SWAP / x
  886. ASI0 *
  887.       \>>
  888.     \>>
  889.   NRKN
  890.     \<< 10000000000
  891. .0000000001 0 0 \-> n
  892. x u d t sk
  893.       \<< 2 x / 't'
  894. STO x ASK0 x ASK1 1
  895. n 1 -
  896.         FOR j j t *
  897. OVER * 3 PICK + ROT
  898. DROP
  899.         NEXT SWAP
  900. DROP
  901.       \>>
  902.     \>>
  903.   ASJ1
  904.     \<< 0 RCLF \-> x a
  905. ff
  906.       \<<
  907.         IF x 3 <
  908.         THEN .5
  909. -.56249985
  910. .21093573
  911. -.03954289
  912. .00443319
  913. -.00031761
  914. .00001109 x 3 / SQ
  915. 6 JYIK x *
  916.         ELSE x JY1
  917. RAD COS * x \v/ /
  918.         END ff STOF
  919.       \>>
  920.     \>>
  921.   ASY1
  922.     \<< 0 RCLF \-> x a
  923. ff
  924.       \<<
  925.         IF x 3 <
  926.         THEN
  927. -.6366198 .2212091
  928. 2.1682709
  929. -1.3164827 .3123951
  930. -.0400976 .0027873
  931. x 3 / SQ 6 JYIK x
  932. ASJ1 x .5 * LN * x
  933. * 2 * \pi \->NUM / + x
  934. /
  935.         ELSE x JY1
  936. RAD SIN * x \v/ /
  937.         END ff STOF
  938.       \>>
  939.     \>>
  940.   ASI1
  941.     \<< 0 \-> x a
  942.       \<<
  943.         IF x ABS
  944. 3.75 <
  945.         THEN .5
  946. .87890594 .51498869
  947. .15084934 .02658733
  948. .00301532 .00032411
  949. x 3.75 / SQ 6 JYIK
  950. x *
  951.         ELSE
  952. .39894228
  953. -.03988024
  954. -.00362018
  955. .00163801
  956. -.01031555
  957. .02282967
  958. -.02895312
  959. .01787654
  960. -.00420059 3.75 x
  961. ABS / 8 JYIK x ABS
  962. DUP EXP SWAP \v/ / *
  963.         END
  964.       \>>
  965.     \>>
  966.   ASK1
  967.     \<< 0 \-> x a
  968.       \<<
  969.         IF x ABS 2
  970. <
  971.         THEN 1
  972. .15443144
  973. -.67278579
  974. -.18156897
  975. -.01919402
  976. -.00110404
  977. -.00004686 x 2 / SQ
  978. 6 JYIK x / x ASI1 x
  979. 2 / LN * +
  980.         ELSE
  981. 1.25331414
  982. .23498619 -.0365562
  983. .01504268
  984. -.00780353
  985. .00325614
  986. -.00068245 2 x / 6
  987. JYIK x DUP NEG EXP
  988. SWAP \v/ / *
  989.         END
  990.       \>>
  991.     \>>
  992.   ASJ0
  993.     \<< 0 RCLF \-> x a
  994. ff
  995.       \<<
  996.         IF x 3 <
  997.         THEN 1
  998. -2.2499997
  999. 1.2656208 -.3163866
  1000. .0444479 -.0039444
  1001. .00021 x 3 / SQ 6
  1002. JYIK
  1003.         ELSE x JY0
  1004. RAD COS * x \v/ /
  1005.         END ff STOF
  1006.       \>>
  1007.     \>>
  1008.   ASY0
  1009.     \<< 0 RCLF \-> x a
  1010. ff
  1011.       \<<
  1012.         IF x 3 <
  1013.         THEN
  1014. .36746691 .60559366
  1015. -.74350384
  1016. .25300117
  1017. -.04261214
  1018. .00427916
  1019. -.00024846 x 3 / SQ
  1020. 6 JYIK x ASJ0 x .5
  1021. * LN * 2 * \pi \->NUM /
  1022. +
  1023.         ELSE x JY0
  1024. RAD SIN * x \v/ /
  1025.         END ff STOF
  1026.       \>>
  1027.     \>>
  1028.   ASI0
  1029.     \<< 0 \-> x a
  1030.       \<<
  1031.         IF x ABS
  1032. 3.75 <
  1033.         THEN 1
  1034. 3.5156229 3.0899424
  1035. 1.2067492 .2659732
  1036. .0360768 .0045813 x
  1037. 3.75 / SQ 6 JYIK
  1038.         ELSE
  1039. .39894228 .01328592
  1040. .00225319
  1041. -.00157565
  1042. .00916281
  1043. -.02057706
  1044. .02635537
  1045. -.01647633
  1046. .00392377 3.75 x
  1047. ABS / 8 JYIK x ABS
  1048. DUP EXP SWAP \v/ / *
  1049.         END
  1050.       \>>
  1051.     \>>
  1052.   ASK0
  1053.     \<< 0 \-> x a
  1054.       \<<
  1055.         IF x ABS 2
  1056. <
  1057.         THEN
  1058. -.57721566 .4227842
  1059. .23069756 .0348859
  1060. .00262698 .0001075
  1061. .0000074 x 2 / SQ 6
  1062. JYIK x ASI0 x 2 /
  1063. LN NEG * +
  1064.         ELSE
  1065. 1.25331414
  1066. -.07832358
  1067. .02189568
  1068. -.01062446
  1069. .00587872 -.0025154
  1070. .00053208 2 x / 6
  1071. JYIK x DUP NEG EXP
  1072. SWAP \v/ / *
  1073.         END
  1074.       \>>
  1075.     \>>
  1076.   JYIK
  1077.     \<< \-> t j
  1078.       \<< 1 j
  1079.         START t * +
  1080.         NEXT
  1081.       \>>
  1082.     \>>
  1083.   JY1
  1084.     \<< 0 \-> x a
  1085.       \<< 3 x / 'a'
  1086. STO .79788456
  1087. .00000156 .01659667
  1088. .00017105
  1089. -.00249511
  1090. .00113653
  1091. -.00020033 a 6 JYIK
  1092. -2.35619449
  1093. .12499612 .0000565
  1094. -.00637879
  1095. .00074348 .00079824
  1096. -.00029166 a 6 JYIK
  1097. x +
  1098.       \>>
  1099.     \>>
  1100.   JY0
  1101.     \<< 0 \-> x a
  1102.       \<< 3 x / 'a'
  1103. STO .79788456
  1104. -.00000077
  1105. -.0055274
  1106. -.00009512
  1107. .00137237
  1108. -.00072805
  1109. .00014476 a 6 JYIK
  1110. -.78539816
  1111. -.04166397
  1112. -.00003954
  1113. .00262573
  1114. -.00054125
  1115. -.00029333
  1116. .00013558 a 6 JYIK
  1117. x +
  1118.       \>>
  1119.     \>>
  1120. END
  1121.  
  1122.